package com.shuda.business.engine.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.shuda.business.engine.dto.*;
import com.shuda.business.engine.entity.*;
import com.shuda.business.external.dto.FormSubmitRequest;
import com.shuda.business.external.dto.DistributionResult;

/**
 * 数据处理引擎服务接口
 * 提供数据处理、字段映射、验证规则、撞库检测等核心功能
 * 
 * @author ink
 * @Description: 数据处理引擎服务
 * @date 2024-10-10 15:10:00
 */
public interface EngineService {

    /**
     * 数据池管理相关方法
     */
    
    /**
     * 获取数据池配置列表
     */
    IPage<DataPoolEntity> getDataPoolList(Integer pageNum, Integer pageSize, String poolName, Integer status);
    
    /**
     * 获取数据池配置详情
     */
    DataPoolEntity getDataPoolById(Long id);
    
    /**
     * 创建数据池配置
     */
    Boolean createDataPool(DataPoolDTO poolDTO);
    
    /**
     * 更新数据池配置
     */
    Boolean updateDataPool(Long id, DataPoolDTO poolDTO);
    
    /**
     * 删除数据池配置
     */
    Boolean deleteDataPool(Long id);
    
    /**
     * 更新数据池配置状态
     */
    Boolean updateDataPoolStatus(Long id, Integer status);

    /**
     * 字段映射管理相关方法
     */
    
    /**
     * 获取字段映射配置列表
     */
    IPage<DataProcessingEngineEntity> getFieldMappingList(Integer pageNum, Integer pageSize, String mappingName, Integer status);
    
    /**
     * 获取字段映射配置详情
     */
    DataProcessingEngineEntity getFieldMappingById(Long id);
    
    /**
     * 创建字段映射配置
     */
    Boolean createFieldMapping(FieldMappingDTO mappingDTO);
    
    /**
     * 更新字段映射配置
     */
    Boolean updateFieldMapping(Long id, FieldMappingDTO mappingDTO);
    
    /**
     * 删除字段映射配置
     */
    Boolean deleteFieldMapping(Long id);
    
    /**
     * 更新字段映射配置状态
     */
    Boolean updateFieldMappingStatus(Long id, Integer status);

    /**
     * 撞库检测管理相关方法
     */
    
    /**
     * 获取撞库检测配置列表
     */
    IPage<CollisionCheckEntity> getCollisionCheckList(Integer pageNum, Integer pageSize, String configName, Integer status);
    
    /**
     * 获取撞库检测配置详情
     */
    CollisionCheckEntity getCollisionCheckById(Long id);
    
    /**
     * 创建撞库检测配置
     */
    Boolean createCollisionCheck(CollisionCheckDTO checkDTO);
    
    /**
     * 更新撞库检测配置
     */
    Boolean updateCollisionCheck(Long id, CollisionCheckDTO checkDTO);
    
    /**
     * 删除撞库检测配置
     */
    Boolean deleteCollisionCheck(Long id);
    
    /**
     * 更新撞库检测配置状态
     */
    Boolean updateCollisionCheckStatus(Long id, Integer status);

    /**
     * 脚本配置管理相关方法
     */
    
    /**
     * 获取脚本配置列表
     */
    IPage<ScriptConfigEntity> getScriptConfigList(Integer pageNum, Integer pageSize, String scriptName, Integer status);
    
    /**
     * 获取脚本配置详情
     */
    ScriptConfigEntity getScriptConfigById(Long id);
    
    /**
     * 创建脚本配置
     */
    Boolean createScriptConfig(DataProcessingEngineDTO configDTO);
    
    /**
     * 更新脚本配置
     */
    Boolean updateScriptConfig(Long id, DataProcessingEngineDTO configDTO);
    
    /**
     * 删除脚本配置
     */
    Boolean deleteScriptConfig(Long id);
    
    /**
     * 更新脚本配置状态
     */
    Boolean updateScriptConfigStatus(Long id, Integer status);

    /**
     * 验证规则管理相关方法
     */
    
    /**
     * 获取验证规则列表
     */
    IPage<ValidationRuleEntity> getValidationRuleList(Integer pageNum, Integer pageSize, String ruleName, Integer status);
    
    /**
     * 获取验证规则详情
     */
    ValidationRuleEntity getValidationRuleById(Long id);
    
    /**
     * 创建验证规则
     */
    Boolean createValidationRule(ValidationRuleDTO ruleDTO);
    
    /**
     * 更新验证规则
     */
    Boolean updateValidationRule(Long id, ValidationRuleDTO ruleDTO);
    
    /**
     * 删除验证规则
     */
    Boolean deleteValidationRule(Long id);
    
    /**
     * 更新验证规则状态
     */
    Boolean updateValidationRuleStatus(Long id, Integer status);

    /**
     * 引擎执行相关方法
     */
    
    /**
     * 执行数据处理引擎
     */
    Boolean executeEngine(FormSubmitRequest executionDTO);
    
    /**
     * 获取引擎状态
     */
    EngineStatusEntity getEngineStatus();
}